package edu.cgpi.core.entidade;

import com.thoughtworks.xstream.annotations.XStreamAlias;

public abstract class AbstractCirculo implements FormaGeometrica {

	@XStreamAlias("Ponto")
	protected Ponto centro;
	@XStreamAlias("Raio")
	protected Double raio;
	
	public AbstractCirculo(Ponto centro, Double raio) {
		this.centro = centro;
		this.raio = raio;
	}
	
	public AbstractCirculo(Ponto centro, Ponto pontoDoCirculo) {
		this.centro = centro;
		raio = centro.calcularDistancia(pontoDoCirculo);
	}

	public Ponto getCentro() {
		return centro;
	}

	public void setCentro(Ponto centro) {
		this.centro = centro;
	}

	public Double getRaio() {
		return raio;
	}

	public void setRaio(Double raio) {
		this.raio = raio;
	}
	
	public Ponto obterLocalizacao() {
		return centro;
	}
	
	protected Double calcularX(Double anguloAtual) {
		return raio * Math.cos(Math.toRadians(anguloAtual)) + centro.getX();
	}
	
	protected Double calcularY(Double anguloAtual) {
		return raio * Math.sin(Math.toRadians(anguloAtual)) + centro.getY();
	}
}